﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Cors;
using Upeu.Matricula.Api.Models;
using Upeu.Matricula.Data.Business;
using Upeu.Matricula.Data.Entities;

namespace Upeu.Matricula.Api.Controllers
{
    [EnableCors(origins: "*", headers: "*", methods: "*")]
    public class StudentController : ApiController
    {
        // GET api/<controller>
        public IEnumerable<StudentModel> Get()
        {
            //return new string[] { "value1", "value2" };
            return StudentBusiness.GetListByFilter("").Select(
                t => new StudentModel
                {
                    Id = t.Id,
                    CodigoM = t.CodigoM,
                    Nombre = t.Nombre,
                    Apellidos = t.Apellidos,
                    DNI = t.DNI,
                    Direccion = t.Direccion,
                    FechaNac = t.FechaNac,
                    Tutor_Id = t.Tutor_Id,
                    TutorModel = new TutorModel
                    {
                        Tutor_Id = t.Tutor.Tutor_Id,
                        Nombre = t.Tutor.Nombre,
                        Apellido_Paterno = t.Tutor.Apellido_Paterno,
                        Apellido_Materno = t.Tutor.Apellido_Materno,
                        Direccion = t.Tutor.Direccion,
                        tutorDni = t.Tutor.tutorDni,
                        Telefono = t.Tutor.Telefono,
                        E_mail = t.Tutor.E_mail
                    }

                });
        }

        // GET api/<controller>/5
        public StudentModel Get(Guid id)
        {
            Student t = StudentBusiness.GetById(id);
            return new StudentModel
            {
                Id = t.Id,
                CodigoM = t.CodigoM,
                Nombre = t.Nombre,
                Apellidos = t.Apellidos,
                DNI = t.DNI,
                Direccion = t.Direccion,
                FechaNac = t.FechaNac,
                Tutor_Id = t.Tutor_Id
            };
        }

        // POST api/<controller>
        public StudentModel Post([FromBody]StudentModel model)
        {
            Student t = StudentBusiness.Create(new Student
            {

                CodigoM = model.CodigoM,
                Nombre = model.Nombre,
                Apellidos = model.Apellidos,
                DNI = model.DNI,
                Direccion = model.Direccion,
                FechaNac = model.FechaNac,
                Tutor_Id = model.Tutor_Id
            });
            return new StudentModel
            {
                Id = t.Id,
                CodigoM = t.CodigoM,
                Nombre = t.Nombre,
                Apellidos = t.Apellidos,
                DNI = t.DNI,
                Direccion = t.Direccion,
                FechaNac = t.FechaNac,
                TutorModel = new TutorModel
                {
                    Tutor_Id = t.Tutor.Tutor_Id,
                    Nombre = t.Tutor.Nombre,
                    Apellido_Paterno = t.Tutor.Apellido_Paterno,
                    Apellido_Materno = t.Tutor.Apellido_Materno,
                    Direccion = t.Tutor.Direccion,
                    tutorDni = t.Tutor.tutorDni,
                    Telefono = t.Tutor.Telefono,
                    E_mail = t.Tutor.E_mail
                }
            };
        }

        // PUT api/<controller>/5
        public StudentModel Put(Guid id, [FromBody]StudentModel model)
        {
            Student t = StudentBusiness.Update(new Student
            {
                Id = id,
                CodigoM = model.CodigoM,
                Nombre = model.Nombre,
                Apellidos = model.Apellidos,
                DNI = model.DNI,
                Direccion = model.Direccion,
                FechaNac = model.FechaNac,
                Tutor_Id = model.Tutor_Id,
            });
            return new StudentModel
            {
                Id = t.Id,
                CodigoM = t.CodigoM,
                Nombre = t.Nombre,
                Apellidos = t.Apellidos,
                DNI = t.DNI,
                Direccion = t.Direccion,
                FechaNac = t.FechaNac,
                Tutor_Id = t.Tutor_Id,
                TutorModel = new TutorModel
                {
                    Tutor_Id = t.Tutor.Tutor_Id,
                    Nombre = t.Tutor.Nombre,
                    Apellido_Paterno = t.Tutor.Apellido_Paterno,
                    Apellido_Materno = t.Tutor.Apellido_Materno,
                    Direccion = t.Tutor.Direccion,
                    tutorDni = t.Tutor.tutorDni,
                    Telefono = t.Tutor.Telefono,
                    E_mail = t.Tutor.E_mail
                }
            };
        }

        // DELETE api/<controller>/5
        public void Delete(Guid id)
        {
            StudentBusiness.Delete(id);
        }
    }
}